Insecure Bank2 취약점(8)

Insecure Bank2 취약점(8)

Description
메모리 내 민감한 정보 저장
category
MobileHacking
Tag
Mobile Security
Andorid
Date
Mar 1, 2024 06:29 AM

메모리 내 민감한 정보 저장

메모리 내 민감한 정보 저장이란?

앱에 입력하는 모든 입력값과 모든 정보들은 메모리에 휘발성으로 저장된다. 해당 취약점은 안드로이드 메모리에 관련 된 취약점이다.
 

취약점 진단

안드로이드 메모리 구조는 Honey comb 버전 이후로 나눠진다.
안드로이드에서는 자바 가상 머신을 사용하지 않고 달빅 가상 머신을 사용하여 앱을 구현한다.
달빅 가상머신을 사용하면 필요한 만큼의 메모리를 할당하고 만일 해당 메모리의 한계 이상을 사용하게 되면 OOM(out of memory)라는 에러가 발생한다.
 
메모리 안의 정보를 얻기 위해선 메모리 포렌식 기법을 사용해야한다.
메모리 포렌식은 시스템 이용 정보나 악성코드 감염과 관련된 다양한 흔적을 분석하는 기법이다.
 
메모리 포렌식을 통해 얻을 수 있는 정보는 아래와 같다.
분류
설명
프로세스, 스레드 정보
프로그램이나 파일이 실행 중이거나 이미 종료되었지만 메모리에 남아 있는 정보 추출
모듈, 라이브러리 정보
프로그램이나 파일이 실행 중이거나 이미 종료된 프로세스 관련 모듈 라이브러리 추출
실행된 파일과 소켓 정보
실행 중이거나 이미 종료된 파일에 대한 정보와 네트워크 연결을 위해 사용되었거나 사용 중인 소켓 정보 추출
다양한 데이터 구조 정보
메모리에만 존재한는 운영체제, 소프트웨어 및 파일과 관련된 다양한 데이터 구조 정보 추출
 

ADB를 통한 진단

메모리 진단이기 때문에 진단 전에 메모리에 데이터를 정보를 넣기 위해 로그인 및 계좌이체 등의 작업을 해준다.
 
ADB를 이용하여 InsecureBank의 PID를 구해준다.
notion image
 
ADB는 dumpheap라는 옵션을 통해 앱의 힙 메모리는 추출 할 수 있다.
사전에 구한 PID를 통해 힙을 추출 후 pull 옵션을 통해 다운로드까지 받아 주었다.
힙 추출 시에는 추출 위치에 쓰기 권한이 있는지 유의 해주자
힙 추출
힙 추출
pull을 통해 추출 한 힙 다운로드
pull을 통해 추출 한 힙 다운로드
 
HxD 프로그램을 통해 해당 힙을 확인 해 본 결과 로그인 하며 입력한 아이디와 패스워드 계좌이체 기록까지 남아 있는 것을 확인 할 수 있다.
notion image
 
 

대응방안

메모리 내 모든 정보를 암호화 하여 저장하기는 어렵기 때문에 중요정보 만이라도 최대한 암호화하여 저장하는 식으로 진행되어야 한다.